# encoding: UTF-8

class Dados::ExameController < ApplicationController

  before_filter :verifica_medico

  def listar
    @paciente = Usuarios::Paciente.buscar_ativos(:id => params[:id]).first
    if @paciente
      @exames = {}
      @paciente.exames.order("inicio DESC").each do |item|
        @exames[item.inicio.strftime("%d/%m/%Y %H:%M:%S")] = item.id.to_s
      end
    else
      flash[:alert] = t('usuarios/paciente.not_found')
      redirect_to '/usuarios/paciente/listar'
    end
  end

  def visualizar
    @paciente = Usuarios::Paciente.buscar_ativos(:id => params[:paciente][:id]).first
    if @paciente
      @exame = Dados::Exame.where(:id => params[:paciente][:exame_id], :paciente_id => @paciente.id).first
      if @exame and params[:tipo]
        respond_to do |format|
          format.html {
            Log.create(:login => @usuario_logado.login, :mensagem => t('dados/exame.access_try') + " (#{@paciente.login})")
            redirect_to '/dados/exame/listar'  # Não atende a requisição
          }
          format.js {
            if params[:tipo] == "1"
              Log.create(:login => @usuario_logado.login, :mensagem => t('dados/exame.access') + 
                                                         " Acelerometro #{@exame.inicio.strftime("%d/%m/%Y %H:%M:%S")} (#{@paciente.login})")
              render :json => @exame.acel_chart_completo
            else
              render :json => @exame.ecg_chart_completo
              Log.create(:login => @usuario_logado.login, :mensagem => t('dados/exame.access') + 
                                                         " ECG #{@exame.inicio.strftime("%d/%m/%Y %H:%M:%S")} (#{@paciente.login})")
            end
          }
        end
      else
        respond_to do |format|
          flash[:alert] = t('dados/exame.not_found')
          format.html {redirect_to '/usuarios/paciente/listar'}
          format.js {
            render :update do |page|
              page.replace_html("exame", t('dados/exame.not_found'))
              page << "loaded();"
            end
          }
        end
      end
    else
      respond_to do |format|
        flash[:alert] = t('usuarios/paciente.not_found')
        format.html {redirect_to '/usuarios/paciente/listar'}
        format.js {
          render :update do |page|
            page.redirect_to('/usuarios/paciente/listar')
          end
        }
      end
    end
  end

  def atualizar_grafico
    @paciente = Usuarios::Paciente.buscar_ativos(:id => params[:paciente][:id]).first
    if @paciente
      @exame = Dados::Exame.where(:id => params[:paciente][:exame_id], :paciente_id => @paciente.id).first
      if @exame and params[:tipo] and /^\d+$/.match(params[:ultimo])
        respond_to do |format|
          format.html {
            redirect_to '/dados/exame/listar'  # Não atende a requisição
          }
          format.js {
            if params[:tipo] == "1"
              render :json => @exame.acel_chart_ultimos(params[:ultimo])
            else
              render :json => @exame.ecg_chart_ultimos(params[:ultimo])
            end
          }
        end
      else
        respond_to do |format|
          flash[:alert] = t('dados/exame.not_found')
          format.html {redirect_to '/usuarios/paciente/listar'}
          format.js {
            render :update do |page|
              page.replace_html("exame", t('dados/exame.not_found'))
              page << "loaded();"
            end
          }
        end
      end
    else
      respond_to do |format|
        flash[:alert] = t('usuarios/paciente.not_found')
        format.html {redirect_to '/usuarios/paciente/listar'}
        format.js {
          render :update do |page|
            page.redirect_to('/usuarios/paciente/listar')
          end
        }
      end
    end
  end

  def atualizar
    @paciente = Usuarios::Paciente.buscar_ativos(:id => params[:paciente][:id]).first
    if @paciente
      @exame = Dados::Exame.where(:id => params[:paciente][:exame_id], :paciente_id => @paciente.id).first
      if @exame
        if @exame.atualizar(params[:exame][:comentarios])
          respond_to do |format|
            format.html {redirect_to :action => :listar, :notice => t('dados/exame.update_success')}
            format.js {
              render :update do |page|
                Log.create(:login => @usuario_logado.login, :mensagem => t('dados/exame.update_success') + " (#{@paciente.login})")
                page.replace_html("submit_message", t('dados/exame.update_success'))
                page["submit_message"].show
                page << "loaded();"
              end
            }
          end
        else
          respond_to do |format|
            format.html {redirect_to :action => :listar, :alert => t('dados/exame.update_fail')}
            format.js {
              render :update do |page|
                page.replace_html("submit_message", t('dados/exame.update_fail'))
                page["submit_message"].show
                page << "loaded();"
              end
            }
          end
        end
      else
        respond_to do |format|
          flash[:alert] = t('dados/exame.not_found')
          format.html {redirect_to '/usuarios/paciente/listar'}
          format.js {
            render :update do |page|
              page.replace_html("exame", t('dados/exame.not_found'))
              page << "loaded();"
            end
          }
        end
      end
    else
      respond_to do |format|
        flash[:alert] = t('usuarios/paciente.not_found')
        format.html {redirect_to '/usuarios/paciente/listar'}
        format.js {
          render :update do |page|
            page.redirect_to('/usuarios/paciente/listar')
            page << "loaded();"
          end
        }
      end
    end
  end


end
